demo: Move the GLSL shaders to resources
authorEmmanuele Bassi <ebassi@gnome.org>
Mon, 9 Feb 2015 16:27:44 +0000 (16:27 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Mon, 9 Feb 2015 19:10:31 +0000 (19:10 +0000)
It's easier to use them or modify them as separate files, instead of
inlined inside the C source.

https://bugzilla.gnome.org/show_bug.cgi?id=741946

demos/gtk-demo/Makefile.am
demos/gtk-demo/demo.gresource.xml
demos/gtk-demo/glarea-fragment.glsl [new file with mode: 0644]
demos/gtk-demo/glarea-vertex.glsl [new file with mode: 0644]
demos/gtk-demo/glarea.c

index 145c98a555b2a8eeb2be5c784fbc82da64e280db..183d1097191e324bd4df6b4198b5a6dbe3038774 100644 (file)
@@ -136,6 +136,8 @@ RESOURCES =                         \
        brick2.png                      \
        background.jpg                  \
        floppybuddy.gif                 \
+       glarea-fragment.glsl            \
+       glarea-vertex.glsl              \
        gnome-applets.png               \
        gnome-calendar.png              \
        gnome-foot.png                  \
index d86119927726eacc19202b701b56f43229db534e..e0e294d5f83585f32058ade137a5ede5e8214780 100644 (file)
   <gresource prefix="/popover">
     <file>popover.ui</file>
   </gresource>
+  <gresource prefix="/shaders">
+    <file>glarea-fragment.glsl</file>
+    <file>glarea-vertex.glsl</file>
+  </gresource>
 </gresources>
diff --git a/demos/gtk-demo/glarea-fragment.glsl b/demos/gtk-demo/glarea-fragment.glsl
new file mode 100644 (file)
index 0000000..aaa7305
--- /dev/null
@@ -0,0 +1,9 @@
+#version 330
+
+out vec4 outputColor;
+
+void main() {
+  float lerpVal = gl_FragCoord.y / 500.0f;
+
+  outputColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal);
+}
diff --git a/demos/gtk-demo/glarea-vertex.glsl b/demos/gtk-demo/glarea-vertex.glsl
new file mode 100644 (file)
index 0000000..163f6ef
--- /dev/null
@@ -0,0 +1,8 @@
+#version 330
+
+layout(location = 0) in vec4 position;
+uniform mat4 mvp;
+
+void main() {
+  gl_Position = mvp * position;
+}
index 548c75fa9f35630fcda7b800e23f7631a41a9922..fd63e86faa07eb74f0c11db75d3a17bb4a6d134c 100644 (file)
@@ -91,26 +91,6 @@ create_shader (int         type,
   return shader;
 }
 
-/* The code for the vertex shader we are going to use */
-static const char *vertex_shader_code =
-"#version 330\n" \
-"\n" \
-"layout(location = 0) in vec4 position;\n" \
-"uniform mat4 mvp;\n"
-"void main() {\n" \
-"  gl_Position = mvp * position;\n" \
-"}";
-
-/* The code for the fragment shader we are going to use */
-static const char *fragment_shader_code =
-"#version 330\n" \
-"\n" \
-"out vec4 outputColor;\n" \
-"void main() {\n" \
-"  float lerpVal = gl_FragCoord.y / 400.0f;\n" \
-"  outputColor = mix(vec4(1.0f, 0.85f, 0.35f, 1.0f), vec4(0.2f, 0.2f, 0.2f, 1.0f), lerpVal);\n" \
-"}";
-
 /* Initialize the shaders and link them into a program */
 static void
 init_shaders (GLuint *program_out,
@@ -120,15 +100,22 @@ init_shaders (GLuint *program_out,
   GLuint program = 0;
   GLuint mvp = 0;
   int status;
+  GBytes *source;
+
+  source = g_resources_lookup_data ("/shaders/glarea-vertex.glsl", 0, NULL);
+  vertex = create_shader (GL_VERTEX_SHADER, g_bytes_get_data (source, NULL));
+  g_bytes_unref (source);
 
-  vertex = create_shader (GL_VERTEX_SHADER, vertex_shader_code);
   if (vertex == 0)
     {
       *program_out = 0;
       return;
     }
 
-  fragment = create_shader (GL_FRAGMENT_SHADER, fragment_shader_code);
+  source = g_resources_lookup_data ("/shaders/glarea-fragment.glsl", 0, NULL);
+  fragment = create_shader (GL_FRAGMENT_SHADER, g_bytes_get_data (source, NULL));
+  g_bytes_unref (source);
+
   if (fragment == 0)
     {
       glDeleteShader (vertex);